package io.github.wanggit.antrpc.console.service;

import io.github.wanggit.antrpc.commons.bean.ConfigItemData;
import io.github.wanggit.antrpc.console.web.vo.ConfigVO;
import io.github.wanggit.antrpc.console.web.vo.Result;

import java.util.List;
import java.util.Map;

public interface ConfigService {
    void saveOrUpdate(ConfigVO configVO);

    void delete(ConfigVO configVO);

    List<String> findAllEnvs(String keyword);

    Result deleteEnv(String envName);

    Result saveEnv(String envName);

    List<String> findAllSpaces(String keyword, String envName);

    Result saveOrUpdateSpace(String envName, String spaceName);

    Result deleteSpace(String envName, String spaceName);

    Result saveOrUpdateKey(
            String envName, String spaceName, String key, String value, String grayReleases);

    Result deleteKey(String envName, String spaceName, String key);

    List<ConfigVO> findAllKeys(String keyword, String envName, String spaceName);

    ConfigItemData findConfigItemData(String envName, String spaceName, String key);

    List<String> findConfigSubscribeNodes(String envName, String spaceName);

    List<ConfigVO> configFuzzyQuery(String pattern);

    void copyToNewSpace(
            String oldEnvName, String oldSpaceName, String newEnvName, String newSpaceName);

    void saveOrUpdateKeys(String envName, String spaceName, Map<String, String> configMap);
}
